Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Anmärkning
Den här artikeln innehåller ytterligare kommentarer till referensdokumentationen för det här API:et.
Klassen HashSet<T> tillhandahåller högpresterande mängdoperationer. En uppsättning är en samling som inte innehåller några duplicerade element och vars element inte är i någon särskild ordning.
Kapaciteten för ett HashSet<T> objekt är antalet element som objektet kan innehålla. Ett HashSet<T> objekts kapacitet ökar automatiskt när element läggs till i objektet.
Klassen HashSet<T> baseras på modellen för matematiska uppsättningar och ger högpresterande uppsättningsåtgärder som liknar åtkomst till nycklarna i Dictionary<TKey,TValue> eller Hashtable samlingarna. Enkelt uttryckt kan klassen HashSet<T> betraktas som en Dictionary<TKey,TValue> samling utan värden.
En HashSet<T> samling är inte sorterad och får inte innehålla duplicerade element. Om order- eller elementduplicering är viktigare än prestanda för ditt program bör du överväga att använda List<T> klassen tillsammans med Sort -metoden.
HashSet<T> erbjuder många matematiska mängdoperationer, såsom mängdaddition (unioner) och mängdsubtraktion. I följande tabell visas de angivna HashSet<T> åtgärderna och deras matematiska motsvarigheter.
| HashSet-åtgärd | Matematisk motsvarighet |
|---|---|
| UnionWith | Union eller mängdaddition |
| IntersectWith | Vägkorsning |
| ExceptWith | Ange subtraktion |
| SymmetricExceptWith | Symmetrisk skillnad |
Förutom de angivna uppsättningsåtgärderna HashSet<T> tillhandahåller klassen även metoder för att fastställa uppsättningsjämlikhet, överlappning av uppsättningar och om en uppsättning är en delmängd eller supermängd av en annan uppsättning.
Endast .NET Framework: För mycket stora HashSet<T> objekt kan du öka den maximala kapaciteten till 2 miljarder element i ett 64-bitarssystem genom att ange enabled attributet <gcAllowVeryLargeObjects> för konfigurationselementet till true i körningsmiljön.
Klassen HashSet<T> implementerar gränssnittet ISet<T>.
HashSet- och LINQ-mängdoperationer
LINQ ger åtkomst till Distinct, Union, Intersect och Except satserna på alla datakällor som implementerar gränssnitten IEnumerable eller IQueryable.
HashSet<T> ger en större och mer robust samling uppsättning åtgärder. Till exempel HashSet<T> ger jämförelser för IsSubsetOf och IsSupersetOf.
Den primära skillnaden mellan LINQ-uppsättningsåtgärder och HashSet<T> -åtgärder är att LINQ-uppsättningsåtgärder alltid returnerar en ny IEnumerable<T> samling, medan HashSet<T> motsvarande metoder ändrar den aktuella samlingen.
Om du måste skapa en ny uppsättning eller om programmet bara behöver åtkomst till de angivna uppsättningsåtgärderna räcker det vanligtvis att använda LINQ-uppsättningsåtgärder i en IEnumerable<T> samling eller matris. Men om ditt program kräver åtkomst till ytterligare uppsättningsåtgärder, eller om det inte är önskvärt eller nödvändigt att skapa en ny samling, använder du HashSet<T> klassen.
I följande tabell visas åtgärderna HashSet<T> och motsvarande LINQ-uppsättningsåtgärder.
| HashSet-åtgärd | LINQ-motsvarighet |
|---|---|
| UnionWith | Union |
| IntersectWith | Intersect |
| ExceptWith | Except |
| Inte angivet. | Distinct |
| SymmetricExceptWith | Inte angivet. |
| Overlaps | Inte angivet. |
| IsSubsetOf | Inte angivet. |
| IsProperSubsetOf | Inte angivet. |
| IsSupersetOf | Inte angivet. |
| IsProperSupersetOf | Inte angivet. |
| SetEquals | Inte angivet. |